/*
 *
 *  *  * Copyright © 2011-2015 Kinghood Group All Rights Reserved.
 *  *  * 未经本公司正式书面同意，其他任何个人、团体不得使用、复制、修改或发布本软件.
 *  *  * 版权所有深圳金雅福控股集团有限公司 www.jinyafu.com.
 *
 */
package com.kinghood.obs;

import com.obs.services.ObsClient;
import com.obs.services.model.PostSignatureRequest;
import com.obs.services.model.PostSignatureResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;


/**
 * 华为云Obs上传接口
 * @version 2019年1月30日下午3:59:09
 * @author Ly
 */
@Slf4j
public class FormUploadUtil {

    /**
     * @description: 获取华为云签名信息，根据桶名
     * @date: 2019/9/4 17:58
     * @author: mjt
     * @param:  [bucketName]
     * @return: java.util.Map<java.lang.String,java.lang.String>
     */
    public static Map<String,String> getSign(String bucketName) {
        // 创建ObsClient实例
        final ObsClient obsClient = new ObsClient(OBSConfig.ACCESS_KEY, OBSConfig.SECRET_KEY, OBSConfig.ENDPOINT);

        PostSignatureRequest request = new PostSignatureRequest();
        // 设置表单参数
        Map<String, Object> formParams = new HashMap<String, Object>();
        // 设置对象访问权限为公共读
        formParams.put("x-obs-acl", "public-read");
        // 设置对象MIME类型
        formParams.put("content-type", "text/plain");

        request.setFormParams(formParams);
        // 设置表单上传请求有效期，单位：秒
        request.setExpires(3600);
        PostSignatureResponse response = obsClient.createPostSignature(request);
        log.info("OBS请求清明返回值:{}",response);
        if(StringUtils.isBlank(bucketName)){
            bucketName=OBSConfig.BUCKETNAME;
        }

        // 获取表单上传请求参数
        Map<String,String> map = new HashMap<String,String>();
        map.put("ak", OBSConfig.ACCESS_KEY);
        map.put("sk", OBSConfig.SECRET_KEY);
        map.put("endpoint", OBSConfig.ENDPOINT);
        map.put("bucketName", bucketName);
        map.put("policy", response.getPolicy());
        map.put("signature", response.getSignature());        
        return map;
    }
}
